#ifndef __COLLEAGE_H__
#define __COLLEAGE_H__

class Mediator;
class Colleage
{
public:
    virtual ~Colleage() = default;
    virtual void Message(std::string msg) = 0;
    virtual void Action(std::string msg) = 0;
protected:
    Colleage() = delete;
    Colleage(Mediator *m) {mdt_ = m;}

    Mediator *mdt_;
};

class ColleageA : public Colleage
{
public:
    ColleageA() = delete;
    ColleageA(Mediator *m) : Colleage(m) {}
    ~ColleageA() = default;

    void Message(std::string msg);
    void Action(std::string msg);
};

class ColleageB : public Colleage
{
public:
    ColleageB() = delete;
    ColleageB(Mediator *m) : Colleage(m) {}
    ~ColleageB() = default;

    void Message(std::string msg);
    void Action(std::string msg);
};

#endif

